package com.cleaningcloud.cld.service.impl;

import java.util.List;
import com.cleaningcloud.common.core.utils.DateUtils;
import com.cleaningcloud.common.security.utils.CommunityTypeUtils;
import com.cleaningcloud.common.security.utils.SecurityUtils;
import com.cleaningcloud.common.security.utils.SubjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.cleaningcloud.cld.mapper.CldSubjectMapper;
import com.cleaningcloud.cld.domain.CldSubject;
import com.cleaningcloud.cld.service.ICldSubjectService;

import javax.annotation.PostConstruct;

/**
 * 科目信息Service业务层处理
 * 
 * @author cleaningcloud
 * @date 2025-08-12
 */
@Service
public class CldSubjectServiceImpl implements ICldSubjectService 
{
    @Autowired
    private CldSubjectMapper cldSubjectMapper;

    /**
     * 项目启动时，初始化字典到缓存
     */
    @PostConstruct
    public void init()
    {
        loadingSubjectCache();
    }

    /**
     * 查询科目信息
     * 
     * @param subjectId 科目信息主键
     * @return 科目信息
     */
    @Override
    public CldSubject selectCldSubjectBySubjectId(Long subjectId)
    {
        return cldSubjectMapper.selectCldSubjectBySubjectId(subjectId);
    }

    /**
     * 查询科目信息列表
     * 
     * @param cldSubject 科目信息
     * @return 科目信息
     */
    @Override
    public List<CldSubject> selectCldSubjectList(CldSubject cldSubject)
    {
        return cldSubjectMapper.selectCldSubjectList(cldSubject);
    }

    /**
     * 新增科目信息
     * 
     * @param cldSubject 科目信息
     * @return 结果
     */
    @Override
    public int insertCldSubject(CldSubject cldSubject)
    {
        cldSubject.setCreateTime(DateUtils.getNowDate());
        cldSubject.setCreateId(SecurityUtils.getUserId());
        cldSubject.setCreateName(SecurityUtils.getUsername());
        cldSubject.setFlag("Y");
        int row = cldSubjectMapper.insertCldSubject(cldSubject);
        loadingSubjectCache();
        return row;
    }

    /**
     * 修改科目信息
     * 
     * @param cldSubject 科目信息
     * @return 结果
     */
    @Override
    public int updateCldSubject(CldSubject cldSubject)
    {
        int row = cldSubjectMapper.updateCldSubject(cldSubject);
        loadingSubjectCache();
        return row;
    }

    /**
     * 批量删除科目信息
     * 
     * @param subjectIds 需要删除的科目信息主键
     * @return 结果
     */
    @Override
    public int deleteCldSubjectBySubjectIds(Long[] subjectIds)
    {
        return cldSubjectMapper.deleteCldSubjectBySubjectIds(subjectIds);
    }

    /**
     * 删除科目信息信息
     * 
     * @param subjectId 科目信息主键
     * @return 结果
     */
    @Override
    public int deleteCldSubjectBySubjectId(Long subjectId)
    {
        return cldSubjectMapper.deleteCldSubjectBySubjectId(subjectId);
    }

    /**
     * @Author Shaw
     * @Description 设置字典缓存
     * @date: 2025-08-12 19:22
     * @param: //TODO
     */
    @Override
    public void loadingSubjectCache() {
        CldSubject cldSubject = new CldSubject();
        cldSubject.setFlag("Y");
        List<CldSubject> list = cldSubjectMapper.selectCldSubjectList(cldSubject);
        if(!list.isEmpty()){
            for (CldSubject obj : list) {
                SubjectUtils.setSubjectCache(String.valueOf(obj.getSubjectId()), obj.getSubjectName());
            }
        }
    }
}
